﻿#include "busidate.h"
#include <QDate>
#include <QDebug>
#include <QFile>
#include <QSettings>

BusiDate::BusiDate()
{
    m_init_s();
}

//取当前交易日前两个交易日
QString  BusiDate::getEndDate()
{
    int currentHour = QTime::currentTime().hour();

    //9点前返回前3天，之后返回2天
    if(currentHour < 9)
    {
        return m_getData(3);
    }else
    {
        return m_getData(2);
    }

}

//取当前交易日前一个交易日
QString  BusiDate::getCheckDate()
{  
    return m_getData(1);
}

QString BusiDate::getBefThreeDate()
{
    return m_getData(3);
}

bool BusiDate::isBusiDate()
{
	//更新当前日期
    m_current_date = QDate::currentDate().toString("yyyyMMdd");
    bool flag = false;
    for(auto &item : m_date)
    {
        if(item[0]==m_current_date && item[1]=="1")
        {
            return true;

        }
        else if(item[0]==m_current_date && item[1]=="0")
        {
            return false;
        }
    }
    return flag;
}

//取给定offset日期
QString BusiDate::m_getData(int offset)
{
    //刷新当前m_date
    m_init_s();

	//更新当前日期
    m_current_date = QDate::currentDate().toString("yyyyMMdd");
	
    int index = 0;
    //找当前日期的索引值
    for(;index < m_date.size();index++)
    {
        if(m_date[index][0] == m_current_date)
        {
            break;
        }
    }
    if(index == 0)
    {
        return m_current_date;
    }

    if(offset ==0 || offset < 0)
    {
        return m_current_date;
    }

    int end_index = offset;
    //根据当前日期推算目标日期
    while (index > 1 && end_index > 0) {
        if(m_date[index - 1][1] == "1")
        {
            index--;
            end_index--;
        }else
        {
            index--;
            continue;
        }

    }
    return m_date[index][0];
}

void BusiDate::m_init_s()
{
    QSettings m_date_settings("./assets/date.ini",QSettings::IniFormat);
    m_date_settings.setIniCodec("UTF-8");
    if(m_date_settings.status() != QSettings::NoError)
    {
        qDebug() << "wen jian jia zai shi bai" << endl;
        return;
    }
    QStringList temp_dates = m_date_settings.childKeys();

    //更新当前日期
    m_current_date = QDate::currentDate().toString("yyyyMMdd");

    //对日期排序
    std::sort(temp_dates.begin(),temp_dates.end(),[](QString a ,QString b){
        return a.toInt() < b.toInt();
    });

    //情况当前m_date
    m_date.clear();

    //将日期加入m_date
    for(int i = 0;i<temp_dates.size();i++)
    {
        QStringList temp;
        temp.append(temp_dates[i]);
        temp.append(m_date_settings.value(temp_dates[i]).toString());
        m_date.append(temp);
    }

}
